package com.cjhhv.communal.util;

import com.cjhhv.communal.model.FileDataModel;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;

public class UploadImgUtil {

    /**
     * 文件上传
     * @param request request请求
     * @param formFileName 表单中的file对象名
     * @param dir   存在目录
     * @return
     */
    public static FileDataModel upload(HttpServletRequest request, String formFileName, String dir, boolean isNewFileName){
        FileDataModel fileData = new FileDataModel();
        //转换为MultipartHttpRequest对象
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;


        //实例化File对象
        File mdFile = new File(dir);

        //如果目录不存在，创建一个目录
        if(!mdFile.exists()){
            mdFile.mkdirs();
        }

        //页面控件的文件流
        MultipartFile multipartFile = multipartRequest.getFile(formFileName);

        //判断上传的文件是否为空
        if(null!=multipartFile && !multipartFile.isEmpty()){

            //判断是否需要重新生成文件名
            String fileName="";
            if(isNewFileName){
                String suffix = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
                fileName =  UUID.randomUUID().toString()+ suffix;
            }else{
                fileName=multipartFile.getOriginalFilename();
            }

            //拼接文件路径
            String filePath = dir + File.separator + fileName;

            //实例化File对象
            File savaFile  = new File(filePath);

            try {
                //写入文件
                multipartFile.transferTo(savaFile);
                fileData.setFileName(fileName);
                fileData.setFileUrl(filePath);

            } catch (Exception e) {
                e.printStackTrace();
                fileData=null;
            }

        }

        return fileData;
    }
}
